Memory Management Units are commonly referred to as MMUs by the person skilled in the art. Applicable memory space management devices manage dynamic allocations of virtual memory spaces of varied sizes between virtual memory buffers and physical memories, e.g., direct access memories (Random Access Memory or RAM) or mass storage devices such as hard disks that may form an extension of these volatile memories.
These dynamic allocations result, for example, from a request to allocate a virtual memory space originating from controllers such as microprocessors or Direct Memory Access (DMA) controllers without these example being restrictive.
Generally speaking, a conventional memory space management device generally partitions a virtual memory space into multiple pages of the same size. Accordingly, each virtual address is a pair consisting of a first field indicating a virtual address page number and a second field representing an offset within the virtual address page corresponding to the page number. A volatile memory is generally composed of physical address spaces partitioned into multiple frames having the same size as that of the virtual address pages.
Such a device also has a page table configured for translating virtual addresses into physical addresses. The page table indeed associates a page number and a corresponding frame number.
As the virtual address pages have the same size as the physical address frames, such a device does not generally prevent possible internal fragmentation.
Moreover, such a device in response to an allocation request for virtual memory space generally allocates one or more contiguous virtual buffer memories in the virtual memory space corresponding to a suitable physical memory space within the volatile memory. As a large buffer memory often requires multiple allocations, fragmentations will progressively occur within the virtual address space, which could prevent a new allocation of virtual memory space of a given size even if the sum of the sizes of the free virtual address spaces is greater than the given size. This kind of problem called ‘external fragmentation’ is known to the person skilled in the art.
Multiple solutions based on virtual memory space management devices comprising virtual buffer memories of different sizes or using specific algorithms such as coalescence algorithms are generally provided for overcoming the problem of internal fragmentation or that of external fragmentation.
However, these provided solutions still suffer from at least one of the following drawbacks: internal fragmentation, external fragmentation and microprocessor processing in the corresponding device.